#define ODD(_NAME, _SRC) \
   group { name: _NAME; \
      inherit: _SRC; \
      parts { \
         part { name: "base"; \
            description { state: "default" 0.0; \
               color_class: "/bg-alt/normal/list/item"; \
            } \
         } \
      } \
   }
#define COMPRESS(_NAME, _SRC) \
   group { name: _NAME; \
      inherit: _SRC; \
      parts { \
         part { name: "elm.text"; \
            description { state: "default" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
            description { state: "selected" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
            description { state: "disabled" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
         } \
      } \
   }
#define COMPRESS_ODD(_NAME, _SRC) \
   group { name: _NAME; \
      inherit: _SRC; \
      parts { \
         part { name: "elm.text"; \
            description { state: "default" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
            description { state: "selected" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
            description { state: "disabled" 0.0; \
               text.min: 0 1; \
               text.ellipsis: 0.0; \
            } \
         } \
         part { name: "base"; \
            description { state: "default" 0.0; \
               color_class: "/bg-alt/normal/list/item"; \
            } \
         } \
      } \
   }

group { name: "elm/list/item/default";
//   data.item: "selectraise" "on";
//   data.item: "focusraise" "on";
   parts {
      part { name: "event"; type: RECT;
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      program {
         signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "event";
      }
      program {
         signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "event";
      }
      part { name: "base"; type: RECT;
         description { state: "default" 0.0;
            color_class: "/bg/normal/list/item";
         }
         description { state: "odd" 0.0;
            color_class: "/bg-alt/normal/list/item";
         }
      }
      program {
         signal: "elm,state,odd"; source: "elm";
         action: STATE_SET "odd" 0.0;
         target: "base";
      }
      program {
         signal: "elm,state,even"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "base";
      }
      part { name: "sel"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "base";
            color_class: "/bg/selected/list/item";
            visible: 0;
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      program {
         signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "sel";
      }
      program {
         signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "sel";
      }

      //##//
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            offscale;
            min: 0 15;
            rel1.offset: 4 4;
            rel1.relative: 1.0 0.0;
            rel1.to_x: "elm.swallow.icon";
            rel2.offset: -5 -5;
            rel2.relative: 0.0 1.0;
            rel2.to_x: "elm.swallow.end";
            color_class: "/fg/normal/list/item";
            text { font: FN; size: 10;
               min: 1 1;
               ellipsis: -1;
               align: 0.0 0.5;
               text_class: "list_item";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/list/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/list/item";
         }
      }
      program {
         signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      //##//
      part { name: "elm.swallow.icon"; type: SWALLOW;
         scale;
         description { state: "default" 0.0;
            offscale;
            min: ICMIN ICMIN;
            fixed: 1 0;
            align: 0.0 0.5;
            rel1.offset: 4 4;
            rel2.relative: 0.0 1.0;
            rel2.offset: 4 -5;
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale;
         description { state: "default" 0.0;
            offscale;
            min: ICMIN ICMIN;
            fixed: 1 0;
            align: 1.0 0.5;
            rel1.offset: -5 4;
            rel1.relative: 1.0 0.0;
            rel2.offset: -5 -5;
         }
      }
   }
}
ODD("elm/list/item_odd/default", "elm/list/item/default")
COMPRESS("elm/list/item_compress/default", "elm/list/item/default")
COMPRESS_ODD("elm/list/item_compress_odd/default", "elm/list/item/default")

// XXX: DO:
// elm/list/h_item/default
// elm/list/h_item_odd/default
// elm/list/h_item_compress/default
// elm/list/h_item_compress_odd/default














group { name: "elm/list/h_item/default";
//   data.item: "selectraise" "on";
//   data.item: "focusraise" "on";
   parts {
      part { name: "event"; type: RECT;
         description { state: "default" 0.0;
            color: 0 0 0 0; // no cc
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      program {
         signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "event";
      }
      program {
         signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "event";
      }
      part { name: "base"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            color_class: "/bg/normal/list/item";
         }
         description { state: "odd" 0.0;
            color_class: "/bg-alt/normal/list/item";
         }
      }
      program {
         signal: "elm,state,odd"; source: "elm";
         action: STATE_SET "odd" 0.0;
         target: "base";
      }
      program {
         signal: "elm,state,even"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "base";
      }
      part { name: "sel"; type: RECT; mouse_events: 0;
         description { state: "default" 0.0;
            rel.to: "base";
            color_class: "/bg/selected/list/item";
            visible: 0;
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            visible: 1;
         }
      }
      program {
         signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "sel";
      }
      program {
         signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "sel";
      }

      //##//
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            offscale;
            rel1.offset: 4 4;
            rel1.relative: 0.0 1.0;
            rel1.to_y: "elm.swallow.icon";
            rel2.offset: -5 -5;
            rel2.relative: 1.0 0.0;
            rel2.to_y: "elm.swallow.end";
            color_class: "/fg/normal/list/item";
            text { font: FN; size: 10;
               min: 1 1;
               ellipsis: -1;
               align: 0.5 0.5;
               text_class: "list_item";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/list/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/list/item";
         }
      }
      program {
         signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
      }
      program {
         signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      //##//
      part { name: "elm.swallow.icon"; type: SWALLOW;
         scale;
         description { state: "default" 0.0;
            offscale;
            fixed: 0 1;
            min: ICMIN ICMIN;
            align: 0.5 0.0;
            rel1.offset: 4 4;
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 4;
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale;
         description { state: "default" 0.0;
            offscale;
            fixed: 0 1;
            min: ICMIN ICMIN;
            align: 0.5 1.0;
            rel1.offset: 4 -5;
            rel1.relative: 0.0 1.0;
            rel2.offset: -5 -5;
         }
      }
   }
}
ODD("elm/list/h_item_odd/default", "elm/list/h_item/default")
COMPRESS("elm/list/h_item_compress/default", "elm/list/h_item/default")
COMPRESS_ODD("elm/list/h_item_compress_odd/default", "elm/list/h_item/default")

#undef ODD
#undef COMPRESS
#undef COMPRESS_ODD
